﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xant.FlowEngine.Interface;

namespace Xant.OrganzService
{
    public class Position : IPosition
    {
        public string Code { get; set; }

        public string Name { get; set; }

        public string Descr { get; set; }

        public override int GetHashCode()
        {
            return Code == null ? base.GetHashCode() : Code.GetHashCode();
        }

        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return false;
            }
            if (obj.GetType() != this.GetType())
            {
                return false;
            }
            Position positionTemp = obj as Position;
            if (!Object.Equals(this.Code, positionTemp.Code))
            {
                return false;
            }
            return true;
        }

        public static bool operator ==(Position p1, Position p2)
        {
            //注意我们调用Equals来判断是否相等。而不是在自己的函数中判、断。这是因为如果在自己的函数中判断。比如有rec2=null的情况。如果是这种情况。我们要判断if(rec2==null) {…}。其中rec2==null也是调用一个等号运算符，这里面有一个递归的过程，造成了死循环。  
            return Object.Equals(p1, p2);
        }

        public static bool operator !=(Position p1, Position p2)
        {
            return !Object.Equals(p1, p2);
        }
    
    }
}
